package top.zhdev.community.mapper;

import org.apache.ibatis.annotations.Mapper;
import top.zhdev.community.entity.Message;

import java.util.List;

@Mapper
public interface MessageMapper {
    /**
     * 查询指定用户的私信数量
     * @param userId
     * @return
     */
    int getConversationCount(int userId);

    /**
     * 查询指定用户的私信
     * @param userId
     * @param offset
     * @param limit
     * @return
     */
    List<Message> getConversations(Integer userId, int offset, int limit);

    /**
     * 获取指定对话的私信数量
     * @param conversationId
     * @return
     */
    int getLetterCount(String conversationId);

    /**
     * 获取用户未读消息数
     * @param userId
     * @param conversationId
     * @return
     */
    int getLetterUnreadCount(Integer userId, String conversationId);

    /**
     * 查询评论类通知
     * @param userId
     * @param topic
     * @return
     */
    Message getLatesNotice(Integer userId, String topic);

    /**
     * 获取系统消息数量
     * @param userId
     * @param topic
     * @return
     */
    int getNoticeCount(Integer userId, String topic);

    /**
     * 获取系统未读消息数量
     * @param userId
     * @param topic
     * @return
     */
    int getNoticeUnreadCount(Integer userId, String topic);

    /**
     * 保存消息
     * @param message
     * @return
     */
    int saveMessage(Message message);

    /**
     * 获取私信列表
     * @param conversationId
     * @param offset
     * @param limit
     * @return
     */
    List<Message> getLetters(String conversationId, int offset, int limit);

    /**
     * 更改未读消息状态为已读
     * @param ids
     * @param status
     * @return
     */
    int updateStatus(List<Integer> ids, int status);

    /**
     * 获取系统通知列表
     * @param userId
     * @param topic
     * @param offset
     * @param limit
     * @return
     */
    List<Message> getNotices(Integer userId, String topic, int offset, int limit);
}
